RAPPORT-ATL-1


JAVA EE ?

Java EE (Java Entreprise Edition) est une plateforme logicielle qui permet aux développeurs de construire et déployer des applications réseau à grande échelle, multi-niveaux, évolutives et sécurisées. Elle fournit un ensemble d'API et d'environnements d'exécution qui facilitent le développement, le déploiement et la gestion d'applications Java dans des environnements distribués et hautement chargés. Java EE est basée sur le langage de programmation Java et comprend une large gamme de technologies, telles que les servlets Java, les pages JavaServer (JSP), l'API de persistance Java (JPA), le service de messagerie Java (JMS) et les Enterprise JavaBeans (EJB). Java EE est largement utilisé dans l'industrie pour construire des applications d'entreprise complexes, distribuées et critiques.


MVC ?

MVC signifie Modèle-Vue-Contrôleur, qui est un modèle d'architecture logicielle couramment utilisé dans le développement d'applications web. Le modèle sépare une application en trois composants interconnectés :

L'idée principale derrière le modèle MVC est de séparer les préoccupations entre les différents composants, ce qui rend l'application plus modulaire, maintenable et évolutive. Ce modèle est largement utilisé dans des frameworks web tels que Ruby on Rails, Django et Spring MVC.


Servlet ?

Un servlet est une classe Java qui permet de traiter les requêtes HTTP et de générer des réponses à ces requêtes. Il s'exécute côté serveur et peut être utilisé pour générer dynamiquement des pages web, récupérer des données à partir d'une base de données, ou encore interagir avec d'autres services web. Les servlets sont souvent utilisés dans le développement d'applications web pour créer des pages web dynamiques et interactives.


Technologies Utiliser


Structure de Projets

.
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
    └── main
        ├── java
        │   └── com
        │       └── ynabouzi
        │           └── atelier1
        │               ├── controllers
        │               │   └── SubmitServlet.java
        │               └── modules
        │                   ├── Registration.java
        │                   └── Student.java
        ├── resources
        └── webapp
            ├── index.jsp
            ├── static
            │   ├── css
            │   │   └── style.css
            │   ├── images
            │   │   ├── ensalogo.png
            │   │   └── Success.gif
            │   └── js
            │       └── app.js
            ├── success.jsp
            └── WEB-INF
                └── web.xml

16 directories, 13 files
  • mvnw et mvnw.cmd : sont des fichiers de script qui permettent d'exécuter Maven sur le projet sans avoir besoin d'installer Maven sur la machine.
  • pom.xml : est le fichier de configuration principal de Maven pour le projet, où sont définies les dépendances, les plugins et la structure du projet.
  • src : est le répertoire racine des sources de l'application.
    • main : est le répertoire principal pour les sources de production de l'application.
      • java : est le répertoire pour les fichiers de code source Java de l'application.
        • com : est le package racine pour les classes de l'application.
          • ynabouzi : est le nom de l'auteur ou de l'entreprise.
            • atelier1 : est le nom du projet.
              • controllers : est le répertoire pour les fichiers de code source pour les classes qui répondent aux requêtes HTTP, comme les servlets.
              • modules : est le répertoire pour les fichiers de code source pour les classes de modèle qui représentent les objets métier de l'application.
      • resources : est le répertoire pour les fichiers de configuration et autres ressources nécessaires à l'application.
    • test : est le répertoire pour les sources de tests de l'application.


Model

Student

package com.ynabouzi.atelier1.model;


import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@ToString
@NoArgsConstructor
public class Registration {
	private Student student;
	private String RegDate;
	private String Major;
	private String Group;
	private String Level;
}

Ce code définit une classe Java appelée Studentqui représente un étudiant. Cette classe contient six champs (ou propriétés) qui décrivent les caractéristiques de l'étudiant. Ce qui est particulier dans cette classe, c'est qu'elle utilise la bibliothèque Lombok pour générer automatiquement des méthodes comme getterset setters, un constructeur sans paramètre et une méthode toString. Cela permet de simplifier le code en évitant d'écrire manuellement ces méthodes à chaque fois que l'on définit une classe avec des champs. En utilisant les annotations Lombok, on peut se concentrer sur la logique métier de la classe plutôt que sur les détails de la mise en place des accesseurs et des constructeurs.

package com.ynabouzi.atelier1.model;


import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@ToString
@NoArgsConstructor
public class Registration {
	private Student student;
	private String RegDate;
	private String Major;
	private String Group;
	private String Level;
}

Ce code définit une classe Java appelée Registrationqui contient cinq propriétés, dont un objet Studentqui représente l'étudiant qui s'inscrit. Les autres propriétés sont RegDate, Major, Groupet Level,qui stockent respectivement la date d'inscription, la filière, le groupe et le niveau de l'étudiant. Cette classe utilise également Lombok pour générer automatiquement les méthodes getters, setters, et toString. Cela permet de simplifier le code en évitant de répéter du code boilerplate pour les méthodes courantes.


Controller

Ce code définit un servlet Java appelé "SubmitServlet" qui gère les requêtes HTTP POST. Il importe deux classes: Registration et Student. Il utilise l'annotation @WebServlet pour mapper le servlet à l'URL "/register".

@WebServlet(name = "SubmitServlet", value = "/register")
public class SubmitServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public SubmitServlet() {
		super();
	}

...
}

La méthode doPost du servlet gère les données de formulaire soumises par un utilisateur dans un formulaire d'inscription. Elle crée une nouvelle instance de la classe Student et définit ses champs sur les valeurs soumises par l'utilisateur. Elle crée ensuite une nouvelle instance de la classe Registration et définit ses champs, y compris l'objet Student créé précédemment.

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// Instantiating The Etudiant class
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-dd-M");
		Student std = new Student();
		std.setFirstName(request.getParameter("FirstName"));
		std.setLastName(request.getParameter("LastName"));
		std.setEmail(request.getParameter("Email"));
		std.setCIN(request.getParameter("CIN"));
		std.setBirthDate(request.getParameter("BirthDate"));
		std.setPhoneNumber(request.getParameter("PhoneNumber"));

		// Instantiating The Registration Class

		Registration reg = new Registration();
		reg.setStudent(std);
		reg.setRegDate(request.getParameter("RegDate"));
		reg.setGroup(request.getParameter("Group"));
		reg.setLevel(request.getParameter("Level"));
		reg.setMajor(request.getParameter("Major"));

		// Send values to a Success page
		request.setAttribute("Student", reg.getStudent());
		request.setAttribute("Registration", reg);

		// Forward to the second page
		request.getRequestDispatcher("success.jsp").forward(request, response);
		doGet(request, response);
	}

Le servlet définit ensuite des attributs dans l'objet de requête HTTP, y compris les objets Student et Registration, et transfère la requête vers une page JSP appelée "success.jsp". Enfin, le servlet appelle la méthode doGet, qui n'est pas implémentée dans ce code.


View

Index.jsp

<form action="register" method="POST">
    <div class="row">
        <div class="col-left">
            <img alt="logo" src="./static/images/ensalogo.png" id="ensalogo"/>
            <div class="field-group">
                <input type="text" id="FirstName" name="FirstName" class="input-field" placeholder="First Name"
                       autocomplete="off" required>
                <label for="FirstName" class="input-label">First Name</label>
            </div>

...
<form>

Ce code HTML est une page de formulaire pour l'enregistrement des étudiants. Le formulaire comprend des champs pour le prénom, le nom, l'e-mail, la date de naissance, la carte d'identité nationale (CIN), le numéro de téléphone, la date d'inscription, le groupe, la majeure et le niveau de l'étudiant. Les champs sont tous requis et ont des étiquettes correspondantes. Il y a également un bouton de soumission et un message d'erreur affiché si l'utilisateur ne remplit pas tous les champs.


success.jsp

<body>
<%@ page import="com.ynabouzi.atelier1.model.Student" %>
<%@ page import="com.ynabouzi.atelier1.model.Registration" %>

<%
    Student std = (Student) request.getAttribute("Student");
    Registration reg = (Registration) request.getAttribute("Registration");
%>

<div class="row">
    <div class="col-left">
        <img src="static/images/Success.gif" class="success-img">
        <div class="field-group">
            <input type="text" id="FirstName" name="FirstName" class="input-field" placeholder="First Name"
                   autocomplete="off" value="<%=std.getFirstName()%>" disabled>
            <label for="FirstName" class="input-label">First Name</label>
        </div>
        <div class="field-group">
            <input type="text" id="LastName" name="LastName" class="input-field" placeholder="Last Name"
                   autocomplete="off" value="<%=std.getLastName()%>" disabled>
            <label for="LastName" class="input-label">Last Name</label>
        </div>
        <div class="field-group">
            <input type="text" id="Email" name="Email" class="input-field" placeholder="Email" autocomplete="off"
                   value="<%=std.getEmail()%>"
                   disabled>
            <label for="Email" class="input-label">Email</label>
        </div>
...
</body>

Ce code représente une page JSP (JavaServer Pages) qui affiche un formulaire de confirmation d'inscription pour un étudiant. Le formulaire contient des champs pour les informations de l'étudiant (nom, prénom, email, date de naissance, CIN, numéro de téléphone) ainsi que les informations d'inscription (date d'inscription, groupe, majeure, niveau).

Les données des champs sont pré-remplies avec les valeurs de l'objet Student et de l'objet Registration qui sont passés en tant qu'attributs de la requête HTTP. Les champs sont également désactivés, ce qui empêche les utilisateurs de modifier les valeurs.

Le code HTML utilise également des feuilles de style CSS et des fichiers JavaScript pour styliser la page et ajouter des fonctionnalités telles que la validation des champs de saisie.



Resultat


Resources


Made with Love 🦢

by @NBGamer